package com.wicket.okrframework.integration.dto;

import com.wicket.okrframework.common.dto.BaseDto;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.Objects;
import javax.validation.constraints.NotNull;
import lombok.Data;

/**
 * @desc DockingDeptInfoDto
 * @使用场景
 */
@Data
public class DockingDeptInfoDto extends BaseDto implements Serializable {

  /**
   * 部门编号
   */
  @ApiModelProperty("部门编号")
  private String deptNumber;

  /**
   * 部门名称（中文）
   */
  @ApiModelProperty("部门名称（中文）")
  private String deptName;

  /**
   * 部门名称（英文）
   */
  @ApiModelProperty("部门名称（英文）")
  private String deptEnName;

  /**
   * 部门简称
   */
  @ApiModelProperty("部门简称")
  private String deptShortName;

  /**
   * 上级部门编号
   */
  @ApiModelProperty("上级部门编号")
  private String parentDeptNumber;

  /**
   * 上级部门名称（中文）
   */
  @ApiModelProperty("上级部门名称（中文）")
  private String parentDeptName;

  /**
   * 部门类型名称
   */
  @ApiModelProperty("部门类型名称")
  private String typeDictionaryName;

  /**
   * 分管领导工号
   */
  @ApiModelProperty("分管领导工号")
  private String deptLeaderCode;

  /**
   * 分管领导姓名
   */
  @ApiModelProperty("分管领导姓名")
  private String deptLeaderName;

  /**
   * 行政主管工号
   */
  @ApiModelProperty("行政主管工号")
  private String directorCode;

  /**
   * 行政主管名称
   */
  @ApiModelProperty("行政主管名称")
  private String directorName;

  /**
   * 党团主管工号
   */
  @ApiModelProperty("党团主管工号")
  private String partyAndYouthDirectorCode;

  /**
   * 党团主管名称
   */
  @ApiModelProperty("党团主管名称")
  private String partyAndYouthDirectorName;

  /**
   * 排序
   */
  @ApiModelProperty("排序")
  private Long orderNumber;

  @Override
  public boolean equals(Object o) {
    if (this == o) return true;
    if (o == null || getClass() != o.getClass()) return false;
    if (!super.equals(o)) return false;
    DockingDeptInfoDto that = (DockingDeptInfoDto) o;
    return (
      deptNumber == that.deptNumber &&
      deptName == that.deptName &&
      deptEnName == that.deptEnName &&
      deptShortName == that.deptShortName &&
      parentDeptNumber == that.parentDeptNumber &&
      parentDeptName == that.parentDeptName &&
      typeDictionaryName == that.typeDictionaryName &&
      deptLeaderCode == that.deptLeaderCode &&
      deptLeaderName == that.deptLeaderName &&
      directorCode == that.directorCode &&
      directorName == that.directorName &&
      partyAndYouthDirectorCode == that.partyAndYouthDirectorCode &&
      partyAndYouthDirectorName == that.partyAndYouthDirectorName &&
      orderNumber == that.orderNumber
    );
  }

  @Override
  public int hashCode() {
    return Objects.hash(
      super.hashCode(),
      deptNumber,
      deptName,
      deptEnName,
      deptShortName,
      parentDeptNumber,
      parentDeptName,
      typeDictionaryName,
      deptLeaderCode,
      deptLeaderName,
      directorCode,
      directorName,
      partyAndYouthDirectorCode,
      partyAndYouthDirectorName,
      orderNumber
    );
  }

}
